{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import os\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import SVC\n",
    "from sklearn import datasets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(C=inf, kernel='linear')"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris = datasets.load_iris()\n",
    "x = iris['data'][:,(2,3)]\n",
    "y = iris['target']\n",
    "setosa_or_versicolor = (y==0) | (y==1)\n",
    "x = x[setosa_or_versicolor]\n",
    "y = y[setosa_or_versicolor]\n",
    "svm_clf = SVC(kernel='linear',C= float('inf'))\n",
    "svm_clf.fit(x,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "x0 = np.linspace(0,5.5,200)\n",
    "pred_1 = 5 * x0-20\n",
    "pred_2 = x0-1.8\n",
    "pred_3 = 0.1 * x0 +0.5\n",
    "def plot_svc_bd(svm_clf,start,end,sv=True):\n",
    "    w =svm_clf.coef_[0]\n",
    "    b = svm_clf.intercept_[0]\n",
    "    x0 = np.linspace(start,end,200)\n",
    "    decision_bd = -w[0]/w[1] * x0 -b/w[1]\n",
    "    margin = 1/w[1]\n",
    "    up = decision_bd + margin \n",
    "    down = decision_bd - margin \n",
    "    plt.plot(x0,decision_bd,'k-' ,linewidth=2)\n",
    "    plt.plot(x0,up,'k--' ,linewidth=2)\n",
    "    plt.plot(x0,down,'k--' ,linewidth=2)\n",
    "\n",
    "    if(sv== True):\n",
    "        svs = svm_clf.support_vectors_\n",
    "        plt.scatter(svs[:,0],svs[:,1],s=180,facecolors='#FAA')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0, 5.5, 0.0, 2.0)"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1008x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(14,4))\n",
    "plt.subplot(121)\n",
    "\n",
    "#iris 数据集\n",
    "plt.plot(x[:,0][y==1],x[:,1][y==1],'bs')\n",
    "plt.plot(x[:,0][y==0],x[:,1][y==0],'ys')\n",
    "\n",
    "#分割边界\n",
    "#plt.plot(x0,pred_1,'g--',linewidth=2)\n",
    "plt.plot(x0,pred_2,'m--',linewidth=2)\n",
    "plt.plot(x0,pred_3,'r--',linewidth=2)\n",
    "plt.axis([0,5.5,0,2])\n",
    "plt.subplot(122)\n",
    "\n",
    "#决策边界\n",
    "plt.plot(x[:,0][y==1],x[:,1][y==1],'bs')\n",
    "plt.plot(x[:,0][y==0],x[:,1][y==0],'ys')\n",
    "plot_svc_bd(svm_clf,0,5.5)\n",
    "plt.axis([0,5.5,0,2])\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "8bfad08b73d8ae58273d7e252c9e1d922058e2a21d3a8ccb2a1b9808ae54a57f"
  },
  "kernelspec": {
   "display_name": "Python 3.8.0 32-bit",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.0"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
